package tesis.ProyectoFianl.Vista;

import java.util.ArrayList;

import tesis.ProyectoFianl.Entidades.Corredor;
import tesis.ProyectoFianl.Entidades.Ramal;
import tesis.ProyectoFianl.Entidades.Recorrido;
import tesis.ProyectoFianl.Logica.HanlderRecorridos;
import tesis.ProyectoFinal.BusWay.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class ActivityRecorridos extends Activity
{
	Corredor corredor;
	Ramal ramal;
	
	Spinner spCorredor;
	Spinner spRamal;
	Button btnDibujarRecorrido;
	Button btnMostrarInformacion;
	Button btnDibujarRamales;
	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		
		super.onCreate(savedInstanceState);
				
		setContentView(R.layout.pantalla_recorridos);
		
		spCorredor = (Spinner) findViewById(R.id.spCorredor);		
		spRamal = (Spinner) findViewById(R.id.spRamal);
		
		btnDibujarRecorrido = (Button) findViewById(R.id.btnDibujar);
		btnMostrarInformacion = (Button) findViewById(R.id.btnInformacion);
		btnDibujarRamales = (Button) findViewById(R.id.btnDibujarRamales);
				
		cargarCorredor(getCorredor());
		
		btnMostrarInformacion.setOnClickListener(clickBtnInformacionRecorrido);
		btnDibujarRecorrido.setOnClickListener(clickBtnDibujarRecorrido);
		btnDibujarRamales.setOnClickListener(clickBtnDibujarRamales);
					
		spCorredor.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener() 
        {          
            
            @Override
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
            {            	           	
            	corredor = (Corredor) parent.getSelectedItem();
            	
//            	spRamal.setAdapter(handlerMap.fillSpinnerRamal(corredor));
            	cargarRamal(getRamal(corredor));
            }

			
			@Override
			public void onNothingSelected(AdapterView<?> arg0) 
			{
				// TODO Auto-generated method stub
				
			}
        });
		
		spRamal.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener() 
        {          
            
            @Override
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
            {            	           	
            	ramal = (Ramal) parent.getSelectedItem();
            	getRecorrido(ramal);
            }

			
			@Override
			public void onNothingSelected(AdapterView<?> arg0) 
			{
				// TODO Auto-generated method stub
				
			}
        });   
	}
	//Metodo que se ejecuta al presionar en el boton "ver detalle recorridos"
	private OnClickListener clickBtnInformacionRecorrido = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{
			Intent activityDetalleRecorrido = new Intent();
			activityDetalleRecorrido.setClass(ActivityRecorridos.this, ActivityRecorridosDetalle.class);
			activityDetalleRecorrido.putExtra("corredor",corredor.getNombre());
			activityDetalleRecorrido.putExtra("ramal",ramal.getDescripcion());
			activityDetalleRecorrido.putExtra("recorrido",ramal.getRecorrido().getDescripcion());
			startActivity(activityDetalleRecorrido);
			
		}
	};
	//Metodo que se ejecuta al presionar en el boton "dibujar recorrido mapa"
	private OnClickListener clickBtnDibujarRecorrido = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{			
			final ProgressDialog pd = ProgressDialog.show(ActivityRecorridos.this, 
                    "", "Cargando..", true);
			new Thread(new Runnable()
			{
				@Override
				public void run()
				{
					Intent activityDibujarRecorrido = new Intent();
					activityDibujarRecorrido.setClass(ActivityRecorridos.this, ActivityMapRecorridos.class);
					activityDibujarRecorrido.putExtra("opcion", 1);
					activityDibujarRecorrido.putExtra("recorrido", ramal.getRecorrido());        			
					startActivity(activityDibujarRecorrido);
					pd.dismiss();
				}
			}).start();		       
		}
	};
	
	//Metodo que se ejecuta al presionar en el boton "dibujar Ramales"
	private OnClickListener clickBtnDibujarRamales = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{			
			final ProgressDialog pd = ProgressDialog.show(ActivityRecorridos.this, 
                    "", "Cargando..", true);
			new Thread(new Runnable()
			{
				@Override
				public void run()
				{
					Intent activityDibujarRecorrido = new Intent();
					activityDibujarRecorrido.setClass(ActivityRecorridos.this, ActivityMapRecorridos.class);
					activityDibujarRecorrido.putExtra("opcion", 2);
					activityDibujarRecorrido.putExtra("corredor", corredor);        			
					startActivity(activityDibujarRecorrido);
					pd.dismiss();
				}
			}).start();		       
		}
	};
	
	//Metodo para obtener una lista de objetos "corredor";
	public ArrayList<Corredor> getCorredor()
	{
		HanlderRecorridos hanlderRecorridos = new HanlderRecorridos(getBaseContext());
		ArrayList<Corredor> listaCorredores = hanlderRecorridos.listarCorredor();
		return listaCorredores;
	}
	
	//Metodo para transformar la lista de objetos corredor y llenar el spinner con estos;
	public void cargarCorredor(ArrayList<Corredor> listaCorredores)
	{
		ArrayAdapter<Corredor> adapter = new ArrayAdapter<Corredor>(this, 
				android.R.layout.simple_spinner_item, 
				listaCorredores);
		adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
		spCorredor.setAdapter(adapter);
	}
	
	//Metodo para obtener una lista de objetos "ramal" en base al corredor seleccionado.;
	public ArrayList<Ramal> getRamal(Corredor corredor)
	{
		HanlderRecorridos hanlderRecorridos = new HanlderRecorridos(getBaseContext());
		ArrayList<Ramal> listaRamal = hanlderRecorridos.listarRamal(corredor);
		return listaRamal;
	}
	
	//Metodo para transformar la lista de objetos corredor y llenar el spinner con estos;
	public void cargarRamal(ArrayList<Ramal> listaRamales)
	{
		ArrayAdapter<Ramal> adapter = new ArrayAdapter<Ramal>(this, 
				android.R.layout.simple_spinner_item, 
				listaRamales);
		adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
		spRamal.setAdapter(adapter);
	}
	
	public Recorrido getRecorrido(Ramal ramal)
	{
		HanlderRecorridos hanlderRecorridos = new HanlderRecorridos(getBaseContext());
		return hanlderRecorridos.getRecorrido(ramal);
	}
	
	
	
	
	public void mostrarInformacionRecorrido(Ramal ramal)
	{
		
	}
	
	public void selectRamal(Ramal ramal)
	{
		
	}
	
	
	@Override
	public void onPause() 
	{
	    super.onResume();
	    // do my stuff
//	    dialog.hide();

	} 


}
